home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / dodge.swf / scripts / __Packages / WaveManager.as < prev   
Encoding:
Text File  |  2011-10-17  |  4.1 KB  |  163 lines

  1. class WaveManager implements Steppable
  2. {
  3.    var enemyList;
  4.    var minTime;
  5.    var maxTime;
  6.    var releaseTime;
  7.    var maxPerWave = 3;
  8.    var timer = 0;
  9.    var dead = false;
  10.    var endTimer = 0;
  11.    function WaveManager(minTime, maxTime, maxPerWave)
  12.    {
  13.       this.enemyList = new Array();
  14.       this.minTime = minTime;
  15.       this.maxTime = maxTime;
  16.       if(maxPerWave != null)
  17.       {
  18.          this.maxPerWave = maxPerWave;
  19.       }
  20.       this.releaseTime = CustomMath.randomRange(minTime,maxTime);
  21.       this.timer = this.releaseTime - 30;
  22.       Stepper.add(this);
  23.    }
  24.    function step()
  25.    {
  26.       if(this.timer > this.releaseTime)
  27.       {
  28.          this.releaseEnemies();
  29.          this.timer = 0;
  30.       }
  31.       else
  32.       {
  33.          if(this.enemyList.size() <= 0 && this.isDone())
  34.          {
  35.             SoundManager.endLevel();
  36.             LevelManager.signal();
  37.             this.die();
  38.          }
  39.          this.timer = this.timer + 1;
  40.       }
  41.    }
  42.    function push(e)
  43.    {
  44.       this.enemyList.push(e);
  45.       this.shuffle();
  46.    }
  47.    function clear()
  48.    {
  49.       this.enemyList = new Array();
  50.    }
  51.    function shuffle()
  52.    {
  53.       var _loc5_ = 0;
  54.       while(_loc5_ < 3)
  55.       {
  56.          var _loc2_ = 0;
  57.          while(_loc2_ < this.enemyList.length)
  58.          {
  59.             var _loc3_ = this.enemyList[_loc2_];
  60.             var _loc4_ = undefined;
  61.             this.enemyList[_loc2_] = this.enemyList[_loc4_ = random(this.enemyList.length)];
  62.             this.enemyList[_loc4_] = _loc3_;
  63.             _loc2_ = _loc2_ + 1;
  64.          }
  65.          _loc5_ = _loc5_ + 1;
  66.       }
  67.    }
  68.    function releaseEnemies()
  69.    {
  70.       var _loc5_ = CustomMath.randomRange(1,this.maxPerWave);
  71.       var _loc3_ = 0;
  72.       while(_loc3_ < this.maxPerWave)
  73.       {
  74.          if(this.enemyList.length <= 0)
  75.          {
  76.             return undefined;
  77.          }
  78.          var _loc4_ = this.enemyList.pop();
  79.          var _loc2_ = this.getRandomPoint();
  80.          switch(_loc4_)
  81.          {
  82.             case "Enemy":
  83.                new Enemy(_loc2_.x,_loc2_.y);
  84.                break;
  85.             case "MovingEnemy":
  86.                new MovingEnemy(_loc2_.x,_loc2_.y);
  87.                break;
  88.             case "SelfDestructingEnemy":
  89.                new SelfDestructingEnemy(_loc2_.x,_loc2_.y);
  90.                break;
  91.             case "TeleportingEnemy":
  92.                new TeleportingEnemy(_loc2_.x,_loc2_.y);
  93.                break;
  94.             case "StraightEnemy":
  95.                new StraightEnemy(_loc2_.x,_loc2_.y);
  96.                break;
  97.             default:
  98.                new Enemy(_loc2_.x,_loc2_.y);
  99.          }
  100.          _loc3_ = _loc3_ + 1;
  101.       }
  102.    }
  103.    function getRandomPoint()
  104.    {
  105.       var _loc2_ = undefined;
  106.       var _loc1_ = undefined;
  107.       if(Math.random() < 0.5)
  108.       {
  109.          _loc1_ = CustomMath.randomRange(-30,Stage.height + 30);
  110.          if(Math.random() < 0.5)
  111.          {
  112.             _loc2_ = CustomMath.randomRange(-40,-20);
  113.          }
  114.          else
  115.          {
  116.             _loc2_ = CustomMath.randomRange(Stage.width + 20,Stage.width + 40);
  117.          }
  118.       }
  119.       else
  120.       {
  121.          _loc2_ = CustomMath.randomRange(-30,Stage.width + 30);
  122.          if(Math.random() < 0.5)
  123.          {
  124.             _loc1_ = CustomMath.randomRange(-40,-20);
  125.          }
  126.          else
  127.          {
  128.             _loc1_ = CustomMath.randomRange(Stage.height + 20,Stage.height + 40);
  129.          }
  130.       }
  131.       return new flash.geom.Point(_loc2_,_loc1_);
  132.    }
  133.    function getRandomX()
  134.    {
  135.       if(Math.random() < 0.5)
  136.       {
  137.          return Math.random() * 30 - 20;
  138.       }
  139.       return Math.random() * 30 + Stage.width;
  140.    }
  141.    function getRandomY()
  142.    {
  143.       if(Math.random() < 0.5)
  144.       {
  145.          return Math.random() * 30 - 20;
  146.       }
  147.       return Math.random() * 30 + Stage.height;
  148.    }
  149.    function isDone()
  150.    {
  151.       if(this.enemyList <= 0 && Missile.missiles.size() <= 0 && Enemy.enemies.size() <= 0 && !this.dead)
  152.       {
  153.          this.endTimer = this.endTimer + 1;
  154.       }
  155.       return this.endTimer >= 105;
  156.    }
  157.    function die()
  158.    {
  159.       this.dead = true;
  160.       Stepper.remove(this);
  161.    }
  162. }
  163.